export function capitalize(value: Number | string | bigint | any) {
  if (!value) return '';
  const digits = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
  const units = [
    '分',
    '角',
    '元',
    '拾',
    '佰',
    '仟',
    '万',
    '拾',
    '佰',
    '仟',
    '亿',
    '拾',
    '佰',
    '仟'
  ];
  let num = Math.round(value * 100).toString(); // 转化为分，并转化为字符串
  let len = num.length;
  let result = '';

  for (let i = 0; i < len; i++) {
    const n = num.charAt(i); // 获取当前位数的字符
    const p = len - i - 1; // 获取当前位数
    result += digits[n] + units[p]; // 转化为大写金额汉字
  }

  return result
    .replace(/零仟|零佰|零拾|零/g, '零') // 去除单位前的零
    .replace(/零分/g, '整') // 将0分替换为整
    .replace(/零角零分/g, '整') // 将0元后面跟0分替换为整
    .replace(/亿零拾/g, '亿') // 将亿后面的0拾去掉
    .replace(/亿零佰/g, '亿') // 将亿后面的0佰去掉
    .replace(/亿零/g, '亿') // 将亿后面的0去掉
    .replace(/亿万零/g, '亿万') // 将亿万后面的0去掉
    .replace(/亿万/g, '亿') // 将亿后面的万去掉
    .replace(/亿/g, '亿') // 去除亿后面的零
    .replace(/万零/g, '万') // 去除万后面的零
    .replace(/^元零分$/, '零元') // 将0元替换为零元
    .replace(/^零元$/, '零'); // 将0元替换为零
}
